import { compileToFunction } from "./compiler/index";
import { initState } from "./state";

export function initMixin(Vue) {
  //  给 Vue 添加方法
  Vue.prototype._init = function (options) {
    // 用户初始化操作
    // vue vm.$options 就是获取用户的配置
    const vm = this;
    vm.$options = options; // 将用户的选项挂载到实例上
    // 初始化状态
    initState(vm);
    if (options.el) {
      vm.$mount(options.el); // 实现数据的挂载
    }
  };
  Vue.prototype.$mount = function (el) {
    // 获取元素
    const vm = this;
    el = document.querySelector(el);
    const ops = vm.$options;
    if (!ops.render) {
      let template = ops.template;
      if (!template && el) {
        template = el.outerHTML;
      }
      if (template) {
        // 对模板进行编译
        const render = compileToFunction(template);
        ops.render = render;
      }
    }
    ops.render; // 最终
  };
}
